package uml.behavioral.state.forum;

import util.xml.XMLUtil;

import java.io.File;

/**
 * 状态模式--抽象状态类<br>
 * on 2023/1/6 14:32
 */
public abstract class UserState {
    protected ForumUser user;
    protected static int replyForum;//回复积分
    protected static int downloadForum;//下载文件扣除积分
    protected static int commitForum;//品论积分

    static {
        File config = new File("src/main/resources/xml/state_UserForumSystem.xml");
        try {
            replyForum = Integer.valueOf(XMLUtil.getValueOfFirstTagOfConfigFile(config, "replyForum"));
            downloadForum = Integer.valueOf(XMLUtil.getValueOfFirstTagOfConfigFile(config, "downloadForrom"));
            commitForum = Integer.valueOf(XMLUtil.getValueOfFirstTagOfConfigFile(config, "commitForum"));
            System.out.println("========论坛系统==========");
            System.out.println("下载扣除积分：" + -downloadForum);
            System.out.println("回复增加积分：" + replyForum);
            System.out.println("评论增加积分：" + commitForum);
            System.out.println("=========================");
            System.out.println();
        } catch (Exception e) {
            System.out.println("初始化异常");
            e.printStackTrace();
        }
    }

    public abstract void commit(String msg);

    public abstract void reply(String msg);

    public abstract void fileDownload(String fileName);

    /**
     * 状态转换：<br>
     * 积分<100：新手，可留言，回复留言，不能下载文件<br>
     * 100<积分<1000:高手，可留言，回复留言，回复留言获取双倍积分，可下载文件<br>
     * 积分>1000：专家，可留言，回复留言，回复留言获取双倍积分，下载文件只扣取一半积分<br>
     * 积分<0:不能下载文件<br>
     */
    protected abstract void stateSwitch();

    public UserState(ForumUser user) {
        this.user = user;
    }

    public UserState(UserState state) {
        this.user = state.user;
    }
}
